import 'package:flutter_admin/pages/common/cry/model/page_model.dart';
import 'package:flutter_admin/pages/common/cry/model/response_body_api.dart';
import 'package:flutter_admin/utils/kwargs.dart';
import 'package:flutter_admin/utils/odoo_http_util.dart';

class ProductStockorderOdooApi{
  static Future<ResponseBodyApi> page({data}) async {
    ResponseBodyApi responseBodyApi;
    try{
      var fieldsInfo = {
        'product.template': [
          'product_id',
          'default_code',
          'name',
          'description'
        ], //需要详细信息的model实体和字段,将获取product_code和product_name
      };
      PageModel pageModel = data['page'];
      List domainList = data['domainList'];
      Kwargs recordsKwargs = Kwargs(domain: domainList,limit: pageModel.size,offset: (pageModel.current-1)*pageModel.size,order: pageModel.orders[0].column!+" "+(pageModel.orders[0].asc!?"asc":"desc"));
      var records = await OdooHttpUtil.callKw(model:'product.stockorder',method:'search_read',kwargs:recordsKwargs.toMap(),fieldsInfo: fieldsInfo);
      var total = await OdooHttpUtil.callKw(model:'product.stockorder',method:'search_count',kwargs: {"domain":domainList});
      List<Map<String,dynamic>> list=[];
      records.forEach((element) {
        Map<String, dynamic> map = element;
        list.add(map);
      });
      pageModel.records = list;
      pageModel.total = total;
      pageModel.pages = total~/pageModel.size+1;
      responseBodyApi = ResponseBodyApi(success: true, data: pageModel);
    }catch(e){
      responseBodyApi = ResponseBodyApi(success: false, message: '请求出错了：' + e.toString());
    }
    return responseBodyApi;
  }

  static Future<ResponseBodyApi> removeByIds(data) async {
    ResponseBodyApi responseBodyApi;
    try{
      await OdooHttpUtil.callKw(model: 'product.stockorder',method: "delete_stock_order_data", args: [data]);
      responseBodyApi = ResponseBodyApi(success: true);
    }catch(e){
      responseBodyApi = ResponseBodyApi(success: false, message: '请求出错了：' + e.toString());
    }
    return responseBodyApi;
  }

  static Future<ResponseBodyApi> saveOrUpdate(data) async {
    ResponseBodyApi responseBodyApi;
    try{
      await OdooHttpUtil.callKw(model: 'product.stockorder',method: 'save_stock_order_data', args: [data]);

      // if(data["id"]==null){
      //   // var stockorderprocess = data["product_stockorderprocess"];
      //   // data.remove("product_stockorderprocess");
      //   await OdooHttpUtil.callKw(model: 'product.stockorder',method: 'save_stock_order_data', args: [data]);
      //   // await OdooHttpUtil.callKw(model: 'product.stockorderprocess',method: 'create', args: [stockorderprocess]);
      // }else{
      //   await OdooHttpUtil.callKw(model: 'product.stockorder',method: 'write', args: [[data["id"]],data]);
      // }
      responseBodyApi = ResponseBodyApi(success: true);
    }catch(e){
      responseBodyApi = ResponseBodyApi(success: false, message: '请求出错了：' + e.toString());
    }
    return responseBodyApi;
  }

  static Future<ResponseBodyApi> getOrder() async {
    ResponseBodyApi responseBodyApi;
    try{
      var data = await OdooHttpUtil.callKw(model: 'product.stockorder',method: 'generate_stock_order_number', kwargs: {'domain':[]});
      responseBodyApi = ResponseBodyApi(success: true,data: data);
    }catch(e){
      responseBodyApi = ResponseBodyApi(success: false, message: '请求出错了：' + e.toString());
    }
    return responseBodyApi;
  }

  static Future<ResponseBodyApi> getBarcode(String domain) async {
    ResponseBodyApi responseBodyApi;
    try{
      var data = await OdooHttpUtil.callKw(model: 'stores.requisition',method: 'to_barcode',kwargs: {'domain': domain});
      responseBodyApi = ResponseBodyApi(success: true,data: data);
    }catch(e){
      responseBodyApi = ResponseBodyApi(success: false, message: '请求出错了：' + e.toString());
    }
    return responseBodyApi;
  }

}